home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
United Public Domain Gold 2
/
United Public Domain Gold 2.iso
/
music_utilities
/
pt037.dms
/
pt037.adf
/
docs
/
P40B_Replay.S.pp
/
P40B_Replay.S
Wrap
Text File
|
1989-07-26
|
14KB
|
802 lines
*******************************
* Player v4.0b ® *
* Lev6-version *
* Revision 3 *
* © 1992 Jarno Paananen *
* All rights reserved *
*******************************
;
; call 'P40_init' to initialize the playroutine
; A0 --> Modules address
; A1 --> Samples' address or NULL
; A6 --> Customchip baseaddress ($DFF000)
; returns -1 in D0 if not a correct module
; Used regs: A0/A1/A3/D0/D1
;
P40_init
cmpi.l #`P40B`,(a0)+
beq.b P00
moveq #-1,d0
rts
P00 lea P0(pc),a3
move.l a0,P72-P0(a3)
move.l a0,d0
add.l d0,4(a0)
add.l d0,8(a0)
add.l d0,12(a0)
move.l a1,d0
beq.b P1
move.l a1,12(a0)
P1 move.l 12(a0),d0
moveq #0,d1
move.b 2(a0),d1
subq #1,d1
lea 16(a0),a1
P2 add.l d0,(a1)
add.l d0,6(a1)
lea 16(a1),a1
dbra d1,P2
lea P63(pc),a1
moveq #20,d0
P3 clr (a1)+
dbf d0,P3
lea P64(pc),a1
moveq #20,d0
P4 clr (a1)+
dbf d0,P4
lea P65(pc),a1
moveq #20,d0
P5 clr (a1)+
dbf d0,P5
lea P66(pc),a1
moveq #20,d0
P6 clr (a1)+
dbf d0,P6
move.l 8(a0),a1
move.l a1,P6F-P0(a3)
moveq #0,d1
move (a1)+,d1
add.l 4(a0),d1
move.l d1,32+P63-P0(a3)
moveq #0,d1
move (a1)+,d1
add.l 4(a0),d1
move.l d1,32+P64-P0(a3)
moveq #0,d1
move (a1)+,d1
add.l 4(a0),d1
move.l d1,32+P65-P0(a3)
moveq #0,d1
move (a1)+,d1
add.l 4(a0),d1
move.l d1,32+P66-P0(a3)
move.l a1,P6C-P0(a3)
move.l 4(a0),P70-P0(a3)
lea P62(pc),a0
move.l a0,P71-P0(a3)
move #63,P68-P0(a3)
move #6,P69-P0(a3)
move #5,P6A-P0(a3)
clr P6B-P0(a3)
clr.l P6D-P0(a3)
clr (a3)
move.b #$3f,$bfdd00
move.b #$81,$bfdd00
move.b #151,$bfd400
move.b #1,$bfd500
move.b #$90,$bfde00
move #$6000,$9c(a6)
move #$a000,$9a(a6)
move.l $78.w,P73-P0(a3)
or.b #2,$bfe001
move #$f,$96(a6)
moveq #0,d0
lea P61(pc),a0
move.l a0,$78.w
clr $a8(a6)
clr $b8(a6)
clr $c8(a6)
clr $d8(a6)
rts
;
; call 'P40_end' to stop music
; A6 --> Customchip baseaddress ($DFF000)
;
P40_end clr $a8(a6)
clr $b8(a6)
clr $c8(a6)
clr $d8(a6)
move.l P73(pc),$78.w
rts
;
; call 'P40_music' every frame to play the music
; A6 --> Customchip baseaddress ($DFF000)
; Used regs: a0-a6/d0-d7 -
;
P40_music
lea P0(pc),a3
moveq #44,d6
moveq #16,d7
move (a3),d4
addq #1,d4
cmpi P69(pc),d4
beq.w P2E
lea P63(pc),a5
lea $a0(a6),a4
move d4,(a3)
moveq #3,d5
P7 tst 30(a5)
beq.w P1C
moveq #$f,d0
and (a5),d0
add d0,d0
move P8(pc,d0),d0
jmp P8(pc,d0)
P8 dc P1C-P8,P1D-P8,P1F-P8,P19-P8,P58-P8,P16-P8,P55-P8,P5B-P8
dc PE-P8,P1C-P8,P13-P8,P1C-P8,P1C-P8,P1C-P8,P9-P8,P1C-P8
P9 move.b 2(a5),d0
and.b #$f0,d0
cmp #$90,d0
beq.b PB
cmp #$c0,d0
beq.b PA
cmp #$d0,d0
bne.w P1C
moveq #$f,d0
and.b 2(a5),d0
cmpi (a3),d0
bne.w P1C
move 42(a5),d0
or #$8000,d0
or d0,P67-P0(a3)
move.l 4(a5),a1
move.l (a1)+,(a4)
move (a1),4(a4)
move.b #%10010001,$bfde00
lea P60(pc),a1
move.l a1,$78.w
bra.w P1C
PA moveq #$f,d0
and.b 2(a5),d0
cmpi (a3),d0
bne.w P1C
clr 8(a4)
clr 14(a5)
bra.w P1C
PB subq #1,26(a5)
bne.w P1C
move 42(a5),d0
move d0,$96(a6)
or #$8000,d0
or d0,P67-P0(a3)
move.l 4(a5),a1
move.l (a1)+,(a4)
move (a1),4(a4)
move.b #%10010001,$bfde00
lea P60(pc),a1
move.l a1,$78.w
moveq #$f,d0
and.b 2(a5),d0
move d0,26(a5)
bra.w P1C
PD dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1
PE move (a3),d0
move.b PD(pc,d0),d0
beq.b PF
btst #0,d0
bne.b P10
moveq #$f,d0
and.b 2(a5),d0
bra.b P11
PF moveq #0,d0
bra.b P11
P10 moveq #0,d0
move.b 2(a5),d0
lsr.b #4,d0
P11 add d0,d0
add 28(a5),d0
move P12(pc,d0),6(a4)
bra.w P1C
P12 dc 856,856,808,762,720,678,640,604,570,538,508,480,453
dc 428,404,381,360,339,320,302,285,269,254,240,226
dc 214,202,190,180,170,160,151,143,135,127,120,113
dc 850,850,802,757,715,674,637,601,567,535,505,477,450
dc 425,401,379,357,337,318,300,284,268,253,239,225
dc 213,201,189,179,169,159,150,142,134,126,119,113
dc 844,844,796,752,709,670,632,597,563,532,502,474,447
dc 422,398,376,355,335,316,298,282,266,251,237,224
dc 211,199,188,177,167,158,149,141,133,125,118,112
dc 838,838,791,746,704,665,628,592,559,528,498,470,444
dc 419,395,373,352,332,314,296,280,264,249,235,222
dc 209,198,187,176,166,157,148,140,132,125,118,111
dc 832,832,785,741,699,660,623,588,555,524,495,467,441
dc 416,392,370,350,330,312,294,278,262,247,233,220
dc 208,196,185,175,165,156,147,139,131,124,117,110
dc 826,826,779,736,694,655,619,584,551,520,491,463,437
dc 413,390,368,347,328,309,292,276,260,245,232,219
dc 206,195,184,174,164,155,146,138,130,123,116,109
dc 820,820,774,730,689,651,614,580,547,516,487,460,434
dc 410,387,365,345,325,307,290,274,258,244,230,217
dc 205,193,183,172,163,154,145,137,129,122,115,109
dc 814,814,768,725,684,646,610,575,543,513,484,457,431
dc 407,384,363,342,323,305,288,272,256,242,228,216
dc 204,192,181,171,161,152,144,136,128,121,114,108
dc 907,907,856,808,762,720,678,640,604,570,538,508,480
dc 453,428,404,381,360,339,320,302,285,269,254,240
dc 226,214,202,190,180,170,160,151,143,135,127,120
dc 900,900,850,802,757,715,675,636,601,567,535,505,477
dc 450,425,401,379,357,337,318,300,284,268,253,238
dc 225,212,200,189,179,169,159,150,142,134,126,119
dc 894,894,844,796,752,709,670,632,597,563,532,502,474
dc 447,422,398,376,355,335,316,298,282,266,251,237
dc 223,211,199,188,177,167,158,149,141,133,125,118
dc 887,887,838,791,746,704,665,628,592,559,528,498,470
dc 444,419,395,373,352,332,314,296,280,264,249,235
dc 222,209,198,187,176,166,157,148,140,132,125,118
dc 881,881,832,785,741,699,660,623,588,555,524,494,467
dc 441,416,392,370,350,330,312,294,278,262,247,233
dc 220,208,196,185,175,165,156,147,139,131,123,117
dc 875,875,826,779,736,694,655,619,584,551,520,491,463
dc 437,413,390,368,347,328,309,292,276,260,245,232
dc 219,206,195,184,174,164,155,146,138,130,123,116
dc 868,868,820,774,730,689,651,614,580,547,516,487,460
dc 434,410,387,365,345,325,307,290,274,258,244,230
dc 217,205,193,183,172,163,154,145,137,129,122,115
dc 862,862,814,768,725,684,646,610,575,543,513,484,457
dc 431,407,384,363,342,323,305,288,272,256,242,228
dc 216,203,192,181,171,161,152,144,136,128,121,114
P13 move.b 2(a5),d0
sub.b d0,14+1(a5)
bpl.b P14
clr 14(a5)
clr 8(a4)
bra.w P1C
P14 moveq #64,d0
cmp 14(a5),d0
bge.b P15
move d0,14(a5)
move d0,8(a4)
bra.b P1C
P15 move 14(a5),8(a4)
bra.b P1C
P16 move.b 2(a5),d0
sub.b d0,14+1(a5)
bpl.b P17
clr 14(a5)
clr 8(a4)
bra.b P19
P17 moveq #64,d0
cmp 14(a5),d0
bge.b P18
move d0,14(a5)
P18 move 14(a5),8(a4)
P19 move 18(a5),d0
beq.b P1C
move 20(a5),d1
cmp 16(a5),d0
blt.b P1A
add d1,16(a5)
cmp 16(a5),d0
bgt.b P1B
move d0,16(a5)
clr 18(a5)
move d0,6(a4)
bra.b P1C
P1A sub d1,16(a5)
cmp 16(a5),d0
blt.b P1B
move d0,16(a5)
clr 18(a5)
P1B move 16(a5),6(a4)
P1C add d6,a5
add d7,a4
dbf d5,P7
cmp P6A(pc),d4
beq.b P21
rts
P1D moveq #0,D0
move.b 2(a5),d0
sub d0,16(a5)
moveq #113,d0
cmpi 16(a5),d0
ble.b P1E
move d0,16(a5)
move d0,6(a4)
bra.b P1C
P1E move 16(a5),6(a4)
bra.b P1C
P1F moveq #0,d0
move.b 2(a5),d0
add d0,16(a5)
cmp #856,16(a5)
ble.b P20
move.w #856,d0
move d0,16(a5)
move d0,6(a4)
bra.b P1C
P20 move 16(a5),6(a4)
bra.b P1C
P21 tst P6D-P0(a3)
beq.b P22
subq #1,P6D-P0(a3)
rts
P22 lea P63(pc),a5
move.l P72(pc),a0
move.l P70(pc),a4
moveq #3,d5
P23 tst.b 3(a5)
beq.b P25
bmi.b P24
subq.b #1,3(a5)
clr 30(a5)
add d6,a5
dbf d5,P23
bra.b P2B
P24 addq.b #1,3(a5)
bra.b P29
P25 tst.b 40+1(a5)
beq.b P26
subq.b #1,40+1(a5)
addq.l #4,36(a5)
move.l 36(a5),a2
move.l (a2),(a5)
bra.b P29
P26 move.l 32(a5),a2
tst.b (a2)
bmi.b P27
move.l (a2),(a5)
bra.b P28
P27 move (a2)+,40(a5)
move (a2),d0
lea (a4,d0),a2
move.l (a2),(a5)
move.l a2,36(a5)
P28 addq.l #4,32(a5)
P29 move (a5),d0
st 30(a5)
and #$1f0,d0
beq.b P2A
lea (a0,d0),a1
move.l a1,4(a5)
move.l 12(a1),12(a5)
P2A add d6,a5
dbf d5,P23
P2B subq #1,P68-P0(a3)
bpl.b P2D
move #63,P68-P0(a3)
move.l P6C-P0(a3),a1
move (a1)+,d0
bpl.b P2C
move.l P6F(pc),a1
move (a1)+,d0
P2C lea (a4,d0),a2
move.l a2,32+P63-P0(a3)
move (a1)+,d0
lea (a4,d0),a2
move.l a2,32+P64-P0(a3)
move (a1)+,d0
lea (a4,d0),a2
move.l a2,32+P65-P0(a3)
move (a1)+,d0
add d0,a4
move.l a4,32+P66-P0(a3)
move.l a1,P6C-P0(a3)
P2D rts
P2E clr (a3)
tst P6E-P0(a3)
beq.b P2F
subq #1,P6E-P0(a3)
rts
P2F ;tst P6B-P0(a3) ;Remove colons if you use P69 1
;beq.b P30
;bsr.w P21
P30 lea P63(pc),a5
lea $a0(a6),a4
lea P12(pc),a2
move.b #%10010001,$bfde00
lea P60(pc),a1
move.l a1,$78.w
move #$8000,d4
moveq #3,d5
P31 tst 30(a5)
beq.b P35
moveq #$f,d1
and (a5),d1
subq #3,d1
beq.b P33
subq #2,d1
beq.b P34
moveq #$7e,d0
and.b (a5),d0
beq.b P32
clr.b 23(a5)
add 12(a5),d0
move d0,28(a5)
move (a2,d0),16(a5)
move 42(a5),d0
move d0,$96(a6)
eor d0,d4
subq #4,d1
beq.b P36
move.l 4(a5),a1
move.l (a1)+,(a4)
move (a1),4(a4)
P32 moveq #$f,d0
and (a5),d0
lea P5F(pc),a1
add d0,d0
add (a1,d0),a1
jmp (a1)
P33 move.b 2(a5),d0
beq.b P34
move.b d0,20+1(a5)
P34 moveq #$7e,d0
and.b (a5),d0
beq.b P35
add 12(a5),d0
move d0,28(a5)
move (a2,d0),18(a5)
P35 move 16(a5),6(a4)
move 14(a5),8(a4)
add d6,a5
add d7,a4
dbf d5,P31
move d4,P67-P0(a3)
rts
P36 moveq #0,d1
move.b 2(a5),d1
lsl #8,d1
move.l 4(a5),a1
move.l (a1)+,d0
add.l d1,d0
move.l d0,(a4)
asr #1,d1
move (a1),d0
sub d1,d0
bpl.b P37
move.l -4(a1),(a4)
moveq #1,d0
P37 move d0,4(a4)
bra.b P35
P38 move.b 2(a5),14+1(a5)
bra.b P35
P39 moveq #0,d0
move.b 2(a5),d0
asl #2,d0
add.l P6F(pc),d0
move.l d0,P6C-P0(a3)
P40 move #63,P68-P0(a3)
move.l P6C-P0(a3),a1
move.l P70(pc),a2
move (a1)+,d0
bpl.b P41
move.l P6F(pc),a1
move (a1)+,d0
P41 movem (a1)+,d1-d3
move.l a1,P6C-P0(a3)
lea (a2,d0),a1
move.l a1,32+P63-P0(a3)
lea (a2,d1),a1
move.l a1,32+P64-P0(a3)
lea (a2,d2),a1
move.l a1,32+P65-P0(a3)
add d3,a2
move.l a2,32+P66-P0(a3)
bra.w P35
P42 move.b 2(a5),d0
beq.w P35
move.b d0,d1
move.b 22(a5),d2
and.b #$f,d0
beq.b P43
and.b #$f0,d2
or.b d0,d2
P43 and.b #$f0,d1
beq.b P44
and.b #$f,d2
or.b d1,d2
P44 move.b d2,22(a5)
bra.w P35
P45 move.b 2(a5),d0
beq.w P35
move.b d0,d1
move.b 24(a5),d2
moveq #$f,d3
and.b d3,d0
beq.b P46
and.b #$f0,d2
or.b d0,d2
P46 and.b #$f0,d1
beq.b P47
and.b d3,d2
or.b d1,d2
P47 move.b d2,24(a5)
bra.w P35
P48 move.b 2(a5),d0
and.b #$f0,d0
lsr #3,d0
move P49(pc,d0),d0
jmp P49(pc,d0)
P49 dc P4A-P49,P4B-P49,P4C-P49,P35-P49,P35-P49,P4E-P49,P35-P49
dc P35-P49,P35-P49,P4F-P49,P4D-P49,P50-P49,P35-P49,P51-P49
dc P52-P49,P35-P49
P4A move.b 2(a5),d0
and.b #$fd,$bfe001
or.b d0,$bfe001
bra.w P35
P4B moveq #$f,d0
and.b 2(a5),d0
sub d0,16(a5)
moveq #113,d0
cmpi 16(a5),d0
ble.w P35
move d0,16(A5)
bra.w P35
P4C moveq #$f,d0
and.b 2(a5),d0
add d0,16(a5)
cmp #856,16(a5)
ble.w P35
move #856,16(a5)
bra.w P35
P4D moveq #$f,d0
and.b 2(a5),d0
add d0,14(a5)
moveq #64,d0
cmpi 14(a5),d0
bge.w P35
move d0,14(a5)
bra.w P35
P4E moveq #$f,d0
and.b 2(a5),d0
mulu #74,d0
move d0,12(a5)
bra.w P35
P4F moveq #$f,d0
and.b 2(a5),d0
move d0,26(a5)
bra.w P35
P50 moveq #$f,d0
and.b 2(a5),d0
sub d0,14(a5)
bpl.w P35
clr 14(a5)
bra.w P35
P51 move 42(a5),d0
eor d0,d4
bra.w P35
P52 moveq #$f,d0
and.b 2(a5),d0
move d0,P6D-P0(a3)
move d0,P6E-P0(a3)
bra.w P35
P53 move.b 2(a5),d0
cmp.b #1,d0
bne.b P54
move.b d0,P69+1-P0(a3)
move.b d0,P6A+1-P0(a3)
st P6B-P0(a3)
bra.w P35
P54 move.b d0,P69+1-P0(a3)
subq.b #1,d0
move.b d0,P6A+1-P0(a3)
clr P6B-P0(a3)
bra.w P35
P55 move.b 2(a5),d0
sub.b d0,14+1(a5)
bpl.b P56
clr 14(a5)
clr 8(a4)
bra.b P58
P56 moveq #64,d0
cmp 14(a5),d0
bge.b P57
move d0,14(a5)
P57 move 14(a5),8(a4)
P58 moveq #$f,d0
and.b 22(a5),d0
lsl #6,d0
move.b 23(a5),d1
lsr #1,d1
and #$3e,d1
add d1,d0
move.w P5E(pc,d0),d2
move 16(a5),d0
tst.b 23(a5)
bmi.b P59
add d2,d0
bra.b P5A
P59 sub d2,d0
P5A move d0,6(a4)
move.b 22(a5),d0
lsr.b #2,d0
and #$3c,d0
add.b d0,23(a5)
bra.w P1C
P5B moveq #$f,d0
and.b 24(a5),d0
lsl #6,d0
move.b 25(a5),d1
lsr #1,d1
and #$3e,d1
add d1,d0
move P5E(pc,d0),d2
move 14(a5),d0
tst.b 25(a5)
bmi.b P5C
add d2,d0
cmp #64,d0
ble.b P5D
moveq #64,d0
bra.b P5D
P5C sub d2,d0
bpl.b P5D
moveq #0,d0
P5D move d0,8(a4)
move.b 24(a5),d0
lsr.b #2,d0
and #$3c,d0
add.b d0,25(a5)
bra.w P1C
incdir "dh0:asm/sources/Player/"
P5E incbin vibtab
P5F dc P35-P5F,P35-P5F,P35-P5F,P35-P5F,P42-P5F,P35-P5F,P35-P5F
dc P45-P5F,P35-P5F,P35-P5F,P35-P5F,P39-P5F,P38-P5F,P40-P5F
dc P48-P5F,P53-P5F
P60 move P67(pc),$dff096
move.l P71(pc),$78.w
tst.b $bfdd00
P61 move #$2000,$dff09c
rte
P62 movem.l d0/a0/a1,-(sp)
lea $dff0a0,a1
move P67(pc),d0
move.l 4+P63(pc),a0
move.l 6(a0),(a1)
move 10(a0),4(a1)
move.l 4+P64(pc),a0
move.l 6(a0),16(a1)
move 10(a0),20(a1)
move.l 4+P65(pc),a0
move.l 6(a0),32(a1)
move 10(a0),36(a1)
move.l 4+P66(pc),a0
move.l 6(a0),48(a1)
move 10(a0),52(a1)
tst.b $bfdd00
move.b #%10000000,$bfde00
move #$2000,-4(a1)
movem.l (sp)+,d0/a0/a1
rte
P63 ds 21
dc 1
P64 ds 21
dc 2
P65 ds 21
dc 4
P66 ds 21
dc 8
P0 dc 0
P67 dc $8000
P68 dc 63
P69 dc 6
P6A dc 5
P6B dc 0
P6C dc.l 0
P6D dc 0
P6E dc 0
P6F dc.l 0
P70 dc.l 0
P71 dc.l 0
P72 dc.l 0
P73 dc.l 0
*/ end of file /*